<%--
*
* XML配置文件生成工具
*
--%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<jsp:directive.page import="com.sky.common.file.FileUtils"/>
<%@taglib prefix="f" uri="/fisher/tld/Fisher.tld"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
	<head>
		<title>XML配置文件生成工具</title>
		<%@include file="/share/header.jsp"%>			
		<script type="text/javascript" src="<%=request.getContextPath()%>/fisher/js/ValidatorUtil.min.js"></script>		
		<f:header />
	</head>
	<body bgcolor="#e3e3e3">
		<center><p><span  style="font-size:25px;color: black;font-weight:bold;" >XML配置文件生成工具</span></p></center>
		<fieldset width="100%" height="100%">
			<legend>
				<span ondblclick="$('#sql').val('')" style="cursor: hand;font-size:15px;color: black;font-weight:bold;" title="双击清除查询语句">【查询语句】：</span><span style="font-size: 12px;color: green;">(请输入可以执行的查询语句，以查询字段作为字段配置，查询语句做为查询语句配置)</span>
			</legend>
			<table width="100%" height="100%">
				<tr width="100%">
					<td rowspan="10" style="padding:0;margin:0;" width="100%"  align="center" valign="middle">
						<textarea id="sql" style="padding:0;margin:0;width:100%;"  rows="5"></textarea>
					</td>
				</tr>
			</table>
		</fieldset>
		<fieldset width="100%" height="10%">
			<legend>
				<span ondblclick="$('#path').val('')" style="cursor: hand;font-size:15px;color: black;font-weight:bold;"  title="双击清除路径">【文件生成方式、编码和路径】：</span><span style="font-size: 10px;color: green;">(请输入生成文件路径，文件已存在会覆写，不存在会自动创建，【客户端(Client)】方式目录必须存在，【服务器(Server)】方式目录也会自动创建)</span>
			</legend>
			<table width="100%" height="100%">
				<tr width="100%">
					<td style="padding:0;margin:0;" width="12%"  align="center" valign="middle" >
						<select id="mode" style="padding:0;margin:0;width:100%;">
							<option value="2">服务器(Server)</option>
							<option value="1">客户端(Client)</option>
						</select>
					</td>	
					<td style="padding:0;margin:0;" width="8%"  align="center" valign="middle" >
						<select id="encode" style="padding:0;margin:0;width:100%;">
							<option value="UTF-8">UTF-8</option>
<%--							<option value="GBK">GBK</option>--%>
						</select>
					</td>								
					<td style="padding:0;margin:0;" width="80%"  align="center" valign="middle" >
						<input id="path" type="text" style="padding:0;margin:0;width:100%;" value="<%=FileUtils.getWebRootPath()%>">
					</td>
				</tr>
			</table>
		</fieldset>
		<table width="100%" height="10%">
			<tr width="100%">
				<td style="padding:5;margin:0;" width="100%" align="center" valign="middle">
					<br>
					<input type="button" id="preview"  value="预 览(P)" accesskey="p" onclick="onDoPreview()">&nbsp;&nbsp;
					<input type="button" id="generate" value="生 成(G)" accesskey="g" onclick="onDoGenerate()">&nbsp;&nbsp;
					<input type="button" id="generate" value="运 行(R)" accesskey="r" onclick="onDoRun()">&nbsp;&nbsp;
					<input type="reset"  id="clear"    value="清 除(C)" accesskey="c" onclick="onDoClear()">&nbsp;&nbsp;
					<br>
				</td>
			</tr>
		</table>
		<fieldset width="100%" height="200%">
			<legend>
				<span ondblclick="$('#content').val('')" style="cursor: hand;font-size:15px;color: black;font-weight:bold;" title="双击清除生成内容">【生成内容】：</span><span style="font-size: 12px;color: green;">(请完善生成内容后点击生成按钮生成)</span>
			</legend>
			<table width="100%" height="100%">
				<tr width="100%">
					<td rowspan="10" style="padding:0;margin:0;" width="100%"  align="center" valign="middle" >
						<textarea id="content" style="padding:0;margin:0;width:100%;" rows="50"></textarea>
					</td>
				</tr>
			</table>
		</fieldset>
		<script type="text/javascript">
			//预览
			function onDoPreview(){
				//alert("sql:"+$("#sql").val());
				clearError();
				if(isEmpty($("#sql"),"查询语句")){
					return ;
				}	
				if(window.confirm("你确实要预览？\n注：已有生成内容会覆写..")){			
					var param={sql:$("#sql").val()};			
					$.ajax({
					   type: "post",
					   url: "preview.jsp",
					   data: param,
					   dataType: "json",
					   success: function(data){
						   		alert(data.message);
						   		if(data.success){
						   			$("#content").val(data.result);
						   		}
					   		},
					   error: function(data) {alert(data.message);}
					 });	
				 }		
			}	
			//生成
			function onDoGenerate(){
				//alert("content:"+$("#content").val());
				//alert("path:"+$("#path").val());
				clearError();
				if(isEmpty($("#path"),"文件路径")){
					return ;
				}
				if(isEmpty($("#content"),"生成内容")){
					return ;
				}
				var mode=$("#mode").val();
				var path=$("#path").val();
				var encode=$("#encode").val();
				var content=$("#content").val();
				var encodetext=$("#encode option:selected").text();	
				var modetext=$("#mode option:selected").text();	
				//alert(path);
				if(window.confirm("你确实要在【"+modetext+"】生成编码【"+encodetext+"】的文件【"+path+"】？\n注：已有文件会覆写..")){
					if(mode==1){//客户端
					 	/**************************此方式不能读取中文******************************************************
						var fso;	
						try{
							fso=new ActiveXObject("Scripting.FileSystemObject");				
						}catch(e){
							alert("生成失败：请确定你的浏览器是否启用了【对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本】功能，必须启用了此功能才能生成文件！");
							return ;
						}	
						try{
							var tf=fso.CreateTextFile(path,true);				
							tf.Write(content);
							tf.Close();  
						}catch(e){
							alert("生成失败：请确定文件路径【"+path+"】是否正确或者目录是否存在！");
							return ;
						}
					 	**********************************************************************************/	
						var adodbStream
						try{
							adodbStream=new ActiveXObject("Adodb.Stream");				
						}catch(e){
							alert("生成失败：请确定你的浏览器是否将此站点加入可信站点并启用了【对未标记为可安全执行脚本的ActiveX控件初始化并执行脚本】和【通过域访问数据源】功能，必须启用了此功能才能生成文件！");
							return ;
						}	
						try{
							adodbStream.Type=2;
							adodbStream.Open();
							adodbStream.Charset=encode;
							adodbStream.WriteText(content);
							adodbStream.SaveToFile(path,2);
							adodbStream.Close();
						}catch(e){
							alert("生成失败：请确定文件路径【"+path+"】是否正确或者目录是否存在！");
							return ;
						}											
						
						alert("成功生成指定文件！");						
					}else if(mode==2){//服务器
						var param={content:$("#content").val(),path:$("#path").val(),encode:$("#encode").val()};			
						$.ajax({
						   type: "post",
						   url: "generate.jsp",
						   data: param,
						   dataType: "json",
						   success: function(data){
							   		alert(data.message);
						   		},
						   error: function(data) {alert(data.message);}
						 });					
					}else{//未处理
						alert("未处理的文件生成方式【"+modetext+"】，请与系统管理员联系！");
					}
				}
			}	
			//运行
			function onDoRun(){			
				clearError();
				if(isEmpty($("#path"),"文件路径")){
					return ;
				}
				var path=$("#path").val();
				//alert(fisherReplaceAll(path,"\\","/"));
				var name=fisherReplaceAll(path,"\\","/");//替换反斜杠为正斜杠，防止http参数传递异常
				var url="<%=basePath%>/fisher/jsp/run.jsp?name="+name;
				if(window.confirm("你确实要运行文件【"+path+"】？\n注：请确认文件在服务器上面存在..")){				
					window.open(url,"Runer");			
				}	
			}
			//清除
			function onDoClear(){
			    if(window.confirm("您确实要清除吗？")){
					$("#sql").val("");
					$("#path").val("");
					$("#content").val("");
					clearError();
				}
			}
			//判断是否为空
			function isEmpty(obj,message){
				if(null == $(obj).val()||""== $(obj).val().trim()){
					alert("【"+message+"】必须设置，请设置！");
					$(obj).select();
					$(obj).focus();
					$(obj).css("backgroundColor","pink");
					return true;
				}else{
					return false;
				}				
			}
			function clearError(){
					$("#sql").css("backgroundColor","");
					$("#path").css("backgroundColor","");
					$("#content").css("backgroundColor","");				
			}			
		</script>
	</body>
</html>
